
using Process.Api.DTO.InputDTO;
using Process.Domain.DTO.InputDTO;
using Process.Domain.DTO.OutDTO;
using Process.Domain.Entities;
using Process.Result;
using System.Collections.Generic;

namespace Process.Application.Services
{
    public interface IProcessAppService<T> where T:BaseEntity
    {
        //int AddProcess(ProcessModel process);
        /// <summary>
        /// 添加工序
        /// </summary>
        /// <param name="processDTO">参数</param>
        /// <returns>封装响应类</returns>
        ApiResult<int> AddProcess(AddProcessDTO processDTO);
        
        /// <summary>
        /// 获取分页工序
        /// </summary>
        /// <param name="input">参数</param>
        /// <returns>封装响应类</returns>
        Apipaging<PagingProcessDTO> PagingProcess(PagingProcessInput input);

        /// <summary>
        /// 工序删除
        /// </summary>
        /// <param name="processDTO">参数</param>
        /// <returns>封装响应类</returns>
        ApiResult<int> DeleteProcess(long Id);
        
        /// <summary>
        /// 修改工序
        /// </summary>
        /// <param name="input">参数</param>
        /// <returns>封装响应类</returns>
        ApiResult<int>  UpdateProcess(UpdateProcessInput input);

        /// <summary>
        /// 显示工序
        /// </summary>
        /// <returns></returns>
        Apipaging<ShowprocessDTO> ShowProcess();
        
        /// <summary>
        /// 工艺流程排序
        /// </summary>
        /// <param name="workflow">工艺流程数据</param>
        /// <returns>排序后的工艺流程</returns>
        List<StepNode> SortProcessFlow22(WorkflowSortInput workflow);
    }
} 